import UIKit

class Status: NSObject {
    //微博ID  Int 和OC中 NSInteger是一样  永远匹配当前机型的位数
    //iPhone 4 ~ iPhone 5c 都是32位的机型  在这些机型上面 对应的微博id 会被截取
    //iPhone 5s ~ 最新的机型 都是64的机型
    var id: Int64 = 0
    //微博的创建时间
    var created_at: String?
    //微博正文
    var text: String?
    //微博来源
    var source: String?
    //用户模型属性
    var user: User?
    
    //转发微博模型  嵌套在 微博字段中
    //如果是原创微博 retweeted_status 不存在
    var retweeted_status: Status?
    
    //配图视图数组的属性  数组
    var pic_urls: [[String: String]]? {
        didSet {
            guard let urls = pic_urls else {
                return
            }
            //如果urls不为空 需要实例化 NSURL类型的图片数组
            imageURLs = [NSURL]()
            //遍历 urls 去对应的图片地址(string)
            for item in urls {
                let urlString = item["thumbnail_pic"]
               let urls = urlString?.stringByReplacingOccurrencesOfString( "thumbnail_pic", withString: "bmiddle")
                // 第一个'!'相信后端一定能够给一个urlString
                // 第二个 '!' 相信后端给的urlString 一定是一个合法的urlString
                let url = NSURL(string: urls!)!
                //将url对象添加到数组中
                imageURLs?.append(url)
            }
        }
    }
     //将 pic_urls内的字典遍历 并且取出对应的值 转换为 NSURL类型 -> 添加到这个属性数组中
    var imageURLs: [NSURL]?
    //使用KVC设置初始值
    init(dict: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            //给user属性初始化
            //将AnyObject转换为 字典对象
            if let dict = value as? [String: AnyObject] {
                  // 对 user做字典转模型的操作
                user = User(dict: dict)
                //需要提前终止 否则字典转模型 就白做了
                return
            }
        }
        if key == "retweeted_status" {
            //给user属性初始化
            //将AnyObject转换为 字典对象
            if let dict = value as? [String : AnyObject] {
                // 对 user做字典转模型的操作
                retweeted_status = Status(dict: dict)
                //需要提前终止 否则字典转模型 就白做了
                return
            }

        }
        super.setValue(value, forKey: key)
    }
    //过滤
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
}
